The present disclosure relates generally to computing systems, and more particularly to data synchronization using revision control.
As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option is a computing system. Computing systems may vary in complexity from a single processor operating in relative isolation to large networks of interconnected processors. The interconnected processors may be in close proximity to each other or separated by great distances both physically and as distance is measured in computer networking terms. The interconnected processors may also work together in a closely cooperative fashion or in a loose weakly coupled fashion. Because technology and processing needs and requirements may vary between different applications, the structure and arrangement of the computing system may vary significantly between two different computing systems. The flexibility in computing systems allows them to be configured for both specific users, specific uses, or for more general purposes. Computing system may also include a variety of hardware and software components that may be configured to process, store, and communicate information based on the needs of the users and the applications.
Additionally, some examples of computing systems include non-transitory, tangible machine-readable media that include executable code that when run by one or more processors, may cause the one or more processors to perform the steps of methods described herein. Some common forms of machine readable media include, for example, floppy disk, flexible disk, hard disk, magnetic tape, any other magnetic medium, CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, RAM, PROM, EPROM, FLASH-EPROM, any other memory chip or cartridge, and/or any other medium from which a processor or computer is adapted to read.
Computers, processors, and software systems often share information and provide computing services for each other over a network. In order to do so, a server or some other computing system may provide services for sharing documents, files, or other information among other computing devices or clients. The server may additionally provide services to synchronize modifications made to a shared document by one or more of the clients. According to some types of synchronization services, the server may maintain one or more unique copies of the shared document for each client that is using the shared document at a given time. These copies enable the server to retrieve and/or update the state of the client's version of the document based on information provided by the client, such as a version number and/or a client identifier. In such systems, the number of copies of the shared document stored by the server increases as the number of clients increases. Because the server has limited memory resources, maintaining one or more unique copies of a shared document for each client limits the scalability and efficiency of the synchronization process.
Accordingly, it would be desirable to provide systems and methods to reduce the memory requirements and thus improve the scalability and efficiency of data synchronization systems and processes.